<?php

namespace App\Controller;

use App\Controller\Admin\BaseController;
use app\Services\QiniuService;
use Hyperf\Support\Filesystem\Filesystem;
use Psr\Http\Message\ResponseInterface;

class CommonController extends BaseController
{
    /**
     * 上传
     * @return ResponseInterface
     * @throws \Exception
     */
    public function upload(): \Psr\Http\Message\ResponseInterface
    {
        // 获取上传的文件
        $file = $this->request->file('file');
        if (!isset($file)) {
            return $this->error('未获取到文件');
        }
        // 检查文件是否有效
        if (!$file->isValid()) {
            return $this->error('文件无效');
        }
        // 保存文件到指定目录
        $path = BASE_PATH . '/runtime/uploads/';
        // 如果目录不存在，则创建目录
        if (!is_dir($path)) {
            mkdir($path, 0777, true); // 递归创建目录
        }
        $originalFileName = $file->getClientFilename();
        $extension = pathinfo($originalFileName, PATHINFO_EXTENSION);
        // 对文件名进行 MD5 处理
        $md5FileName = md5($originalFileName.time()) . '.' . $extension;
        //保存到本地
        $file->moveTo($path . $md5FileName);
        //移动到七牛云
//        $ret = (new QiniuService)->moveToQiniu($md5FileName, $path . $md5FileName);
        //删除本地文件
//        unlink($path . $md5FileName);
        //设置文件的权限，让外部服务可以直接访问
        $command = 'chmod -R 777 /var/www/src/runtime/uploads';
        exec($command, $output, $returnVar);
        return $this->success([
            'file_name' => $md5FileName,
            'file_path' => $path . $md5FileName,
            'file_down_url' => "/share/{$md5FileName}"
        ]);
    }
}